package com.xiangge;

public class MyClass3 implements Cloneable{
    // 定义由私人权限修饰符修饰的属性
    private int id;

    // 创建满参构造方法
    public MyClass3(int id) {
        this.id = id;
    }

    // 进行方法重写，覆盖toString方法
    @Override
    public String toString() {
        return "MyClass{" + "id=" + id + '}';
    }

    // 进行方法重写，覆盖clone方法
    @Override
    protected Object clone() throws CloneNotSupportedException {
        // 调用Object类的clone()方法创建当前对象的浅拷贝
        return super.clone();
    }

    public static void main(String[] args) {

        MyClass3 myClass3 = new MyClass3(1);
        try {
            // 使用clone方法创建myClass的副本
            MyClass3 clonedMyClass3 = (MyClass3) myClass3.clone();
            System.out.println(clonedMyClass3); // 输出：MyClass{id=1}，与myClass有相同的id值

            // 注意：由于id是基本数据类型，这里实现的是浅拷贝，所以id的值在原始对象和克隆对象中都是相同的

            // 修改原始对象的id值，以证明两个对象是独立的
            myClass3.id = 2;
            System.out.println(myClass3); // 输出：MyClass{id=2}
            System.out.println(clonedMyClass3); // 输出：MyClass{id=1}，克隆对象的id值没有改变

        } catch (CloneNotSupportedException e) {
            e.printStackTrace();
            // 注意：在实际应用中，由于MyClass实现了Cloneable接口，这里不应该抛出CloneNotSupportedException
        }
    }
}
